package prueba3;

import DAO.DAO;
import entidades.Dispositivo;
import entidades.Variable;
import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Camilo
 */
public class ManejoArchivo {
    FileReader entrada=null;
    ArrayList<String> valoresList = null;
    List<Variable> variablesGuardar = null;
    Date fechaSinc=new Date();
    Dispositivo dispoSinc=new Dispositivo();
    DAO dao1;

    public  ManejoArchivo(Dispositivo dispo){
        dao1=new DAO();
        dispoSinc=dispo;
    }

    public void captutarDatos(String ruta){
         String var="";
         valoresList = new ArrayList<String>();
         try  {
            entrada=new  FileReader(ruta);
            int c;
            while((c=entrada.read())!=-1){
                if((char)c==48 ||(char)c==49 ||(char)c==50 ||(char)c==51 ||(char)c==52 ||(char)c==53 ||(char)c==54 ||(char)c==55 ||(char)c==56 ||(char)c==57 ||(char)c==58 ||(char)c==46 || (char)c==45){
                    var=var+(char)c;
                }
                if((char)c=='\t'|| (char)c=='\n'){
                    if(!var.equals("")){
                        //System.out.println(var+":)");
                        valoresList.add(var);
                    }                    
                    var="";
                }
            }            if(!var.equals("")){
                valoresList.add(var);
                var="";
            }

            tranformarDatos();

       }catch (IOException ex) {
            System.out.println(ex);
       }finally{
            if(entrada!=null){
                try{
                    entrada.close();
                }catch(IOException ex){}
            }
       }

    }

    public void tranformarDatos(){
        variablesGuardar=new ArrayList<Variable>();
        Variable variableAux=new Variable();
        int tam=0;
        if(!valoresList.isEmpty()){
            tam=valoresList.size();
            for(int k=0;k<tam-47;k++)
            {
                System.out.println(valoresList.get(k));
            }
            for(int i=0,j=0;i<tam-47;i=i+8,j++){
                variableAux.setFecha(convertirFecha(valoresList.get(i)));
                variableAux.setPresionin(Float.valueOf(valoresList.get(i+1)));
                variableAux.setPresionout(Float.valueOf(valoresList.get(i+2)));
                variableAux.setCaudal(Float.valueOf(valoresList.get(i+3)));
                variableAux.setSp(Float.valueOf(valoresList.get(i+4)));
                variableAux.setCin(Float.valueOf(valoresList.get(i+5)));
                variableAux.setCout(Float.valueOf(valoresList.get(i+6)));
                variableAux.setFai0(Float.valueOf(valoresList.get(i+7)));
                variableAux.setFai1(Float.valueOf("0"));
                variableAux.setFai2(Float.valueOf("0"));
                variableAux.setFai3(Float.valueOf("0"));
                variableAux.setQdia(Float.valueOf("0"));
                variableAux.setQtotal(Float.valueOf("0"));
                variableAux.setIddispositivo(dispoSinc);
                dao1.create(variableAux);
                variableAux=new Variable();
            }
            System.out.println("finalizo el ciclo de forma correcta");
        }
    }

    public Date convertirFecha(String fechain){
        String dato="";
        int cont=0;
        Date fech=dispoSinc.getFechasinc();

        for(int j=0;j<fechain.length();j++){
            if(fechain.charAt(j)!=':' && fechain.charAt(j)!='\t'){
                dato=dato+fechain.charAt(j);
                
            }
            if(fechain.charAt(j)==':'){
                if(cont==0){
                    //System.out.println("horas"+Integer.valueOf(dato));
                    fech.setHours(Integer.valueOf(dato));

                }
                if(cont==1){
                    fech.setMinutes(Integer.valueOf(dato));
                    
                }
                cont++;
                dato="";
            }
        }
        if(cont==2){
            
            fech.setSeconds(Integer.valueOf(dato));            
        }
        
        return fech;
    }

    public ArrayList<String> getValoresList() {
        return valoresList;
    }

  public void close() {
        dao1.cerrarConexionBD();
    }
 



 /*   public static void main(String[] args){
        DAO jpa=new DAO();
        Dispositivo dispo=new Dispositivo();
        dispo=(Dispositivo) jpa.findObject(Long.valueOf(1), Dispositivo.class);
        ManejoArchivo prueba =new ManejoArchivo(dispo);
        prueba.captutarDatos("C:/Users/Reinaldo/Desktop/pruebas.txt");
    }*/


}
